import os
import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt


class FileUtil():
    def resp_file_upload(requ_data):
        # 保存文件
        file_content = requ_data['file']
        file_name = requ_data['file'].filename
        file_path = 'files/' + file_name
        if os.path.exists(file_path):
            return { 'msg': '该文件已存在', 'file_path' : file_path}
        else:
            file_content.save(file_path)
            return { 'msg': '保存文件成功', 'file_path' : file_path}

    def file_draw(file_path):
        '''
        plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码问题
        fig, ax = plt.subplots(figsize=(10, 5))

        # 读取Excel文件
        df = pd.read_excel(file_path, sheet_name=0)
        print("___")
        print(df.index.size)
        print(df.iloc[:, 1].max())    # 指定列最大值

        x0 = df["国家"]
        x = np.arange(df.index.size)  # 为bar函数提供x轴坐标
        y = df["粮食产量"]

        ax.bar(x, y, color="k", edgecolor="k", width=0.3, tick_label=x0)
        # 上、右边线不显示
        ax.spines['top'].set_visible(False)
        ax.spines['right'].set_visible(False)

        # 只显示y轴网格线
        ax.grid(axis="y", c="k", linestyle="-")

        # 设置y轴的范围为 0~80000
        ax.set_ylim(0, 80000)

        # 图名称
        ax.set_title("2021年世界各国粮食产量前10强(万吨)", fontsize=14)

        # x轴刻度线不显示
        ax.tick_params(axis="x", bottom=False)
        plt.show()
        '''
        df = pd.read_excel(file_path, sheet_name=0)
        # 我也可以指定输入参数和输出参数，这样就能按照我的意愿绘制图形了
        input_values = df.iloc[:, 0]  # 指定输入参数
        squares = df.iloc[:, 1] # 指定输出参数
        plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码问题
        plt.plot(input_values, squares, linewidth=5)  # 调用绘制函数，传入输入参数和输出参数
        plt.title("Square Numbers", fontsize=24)  # 指定标题，并设置标题字体大小
        plt.xlabel("Value", fontsize=14)  # 指定X坐标轴的标签，并设置标签字体大小
        plt.ylabel("Square of Value", fontsize=14)  # 指定Y坐标轴的标签，并设置标签字体大小
        plt.tick_params(axis='both', labelsize=14)  # 参数axis值为both，代表要设置横纵的刻度标记，标记大小为14
        # axis='x' 或者 axis='y' ，则只设置x或者y轴的刻度标记大小
        plt.show()  # 打开matplotlib查看器，并显示绘制的图形